# Docker Compose

# 为什么需要 Compose

当项目有多个服务时(例如 web + mysql + redis),单独用 docker run 管理会很繁琐。

Compose 可以用一个 compose.yaml 文件,把多个服务统一编排和启动。

# 基础示例

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    depends_on:
      - redis

  redis:
    image: redis:7
1
2
3
4
5
6
7
8
9
10

# 常用命令

# 启动
docker compose up -d

# 停止并删除容器
docker compose down

# 查看日志
docker compose logs -f

# 查看服务状态
docker compose ps
1
2
3
4
5
6
7
8
9
10
11

# Node + MySQL + Redis 示例

services:
  app:
    build: .
    container_name: blog-app
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - MYSQL_HOST=mysql
      - REDIS_HOST=redis
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8
    container_name: blog-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: blog
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:7
    container_name: blog-redis
    restart: always
    ports:
      - "6379:6379"

volumes:
  mysql_data:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 使用建议

  • depends_on 只控制启动顺序,不保证服务已就绪。
  • 配置分环境:compose.yaml + compose.prod.yaml。
  • 生产环境建议加 restart 策略与健康检查。